package chapter06

import scala.beans.BeanProperty

/**
  * create by undeRdoG on  2021-05-31  22:08
  * 凡心所向，素履以往，生如逆旅，一苇以航。
  */
object Test03_Class {

  /*
    Scala 中的 public 属性，底层实际为 private，并通过 get 方法（obj.field()）和 set 方法
    （obj.field_=(value)）对其进行操作。所以 Scala 并不推荐将属性设为 private，再为其设置
    public 的 get 和 set 方法的做法。但由于很多 Java 框架都利用反射调用 getXXX 和 setXXX 方
    法，有时候为了和这些框架兼容，也会为 Scala 的属性设置 getXXX 和 setXXX 方法（通过
    @BeanProperty 注解实现）。

    */


  def main(args: Array[String]): Unit = {
    // 创建对象
    val student = new Student()

    //student.name  //  error  private 类型 不能被访问

    println(student.age)

    println(student.sex)

    student.sex = "female"

    println(student.sex)
  }

}


//  定义一个类
class Student {

  /**
    * 若不加修饰符，默认是  public  且不能显示的 声明  public
    **/

  private var name: String = "Alice"

  @BeanProperty
  //初始值 int 为 0
  var age: Int = _

  // 定义初值
  var sex: String = _
}
